#include "CType.h"

struct CType _C_Type_[] = {
0,              0,                  /* -1 == EOF */
_A_|_C_,        0,                  /* 0x00 */
_A_|_C_,        0,                  /* 0x01 */
_A_|_C_,        0,                  /* 0x02 */
_A_|_C_,        0,                  /* 0x03 */
_A_|_C_,        0,                  /* 0x04 */
_A_|_C_,        0,                  /* 0x05 */
_A_|_C_,        0,                  /* 0x06 */
_A_|_C_,        0,                  /* 0x07 */
_A_|_C_,        0,                  /* 0x08 */
_A_|_C_|_S_,    0,                  /* 0x09 */
_A_|_C_|_S_,    0,                  /* 0x0a */
_A_|_C_|_S_,    0,                  /* 0x0b */
_A_|_C_|_S_,    0,                  /* 0x0c */
_A_|_C_|_S_,    0,                  /* 0x0d */
_A_|_C_,        0,                  /* 0x0e */
_A_|_C_,        0,                  /* 0x0f */
_A_|_C_,        0,                  /* 0x10 */
_A_|_C_,        0,                  /* 0x11 */
_A_|_C_,        0,                  /* 0x12 */
_A_|_C_,        0,                  /* 0x13 */
_A_|_C_,        0,                  /* 0x14 */
_A_|_C_,        0,                  /* 0x15 */
_A_|_C_,        0,                  /* 0x16 */
_A_|_C_,        0,                  /* 0x17 */
_A_|_C_,        0,                  /* 0x18 */
_A_|_C_,        0,                  /* 0x19 */
_A_|_C_,        0,                  /* 0x1a */
_A_|_C_,        0,                  /* 0x1b */
_A_|_C_,        0,                  /* 0x1c */
_A_|_C_,        0,                  /* 0x1d */
_A_|_C_,        0,                  /* 0x1e */
_A_|_C_,        0,                  /* 0x1f */
_A_|_S_|_B_,    "space",            /* 0x80 */
_A_|_P_,        "exclam",           /* 0x80 */
_A_|_P_,        "quotedbl",         /* 0x80 */
_A_|_P_,        "numbersign",       /* 0x80 */
_A_|_P_,        "dollar",           /* 0x80 */
_A_|_P_,        "percent",          /* 0x80 */
_A_|_P_,        "ampersand",        /* 0x80 */
_A_|_P_,        "quoteright",       /* 0x80 */
_A_|_P_,        "parenleft",        /* 0x80 */
_A_|_P_,        "parenright",       /* 0x80 */
_A_|_P_,        "asterisk",         /* 0x80 */
_A_|_P_,        "plus",             /* 0x80 */
_A_|_P_,        "comma",            /* 0x80 */
_A_|_P_,        "hyphen",           /* 0x80 */
_A_|_P_,        "period",           /* 0x80 */
_A_|_P_,        "slash",            /* 0x80 */
_A_|_N_|_X_,    "zero",             /* 0x80 */
_A_|_N_|_X_,    "one",              /* 0x80 */
_A_|_N_|_X_,    "two",              /* 0x80 */
_A_|_N_|_X_,    "three",            /* 0x80 */
_A_|_N_|_X_,    "four",             /* 0x80 */
_A_|_N_|_X_,    "five",             /* 0x80 */
_A_|_N_|_X_,    "six",              /* 0x80 */
_A_|_N_|_X_,    "seven",            /* 0x80 */
_A_|_N_|_X_,    "eight",            /* 0x80 */
_A_|_N_|_X_,    "nine",             /* 0x80 */
_A_|_P_,        "colon",            /* 0x80 */
_A_|_P_,        "semicolon",        /* 0x80 */
_A_|_P_,        "less",             /* 0x80 */
_A_|_P_,        "equal",            /* 0x80 */
_A_|_P_,        "greater",          /* 0x80 */
_A_|_P_,        "question",         /* 0x80 */
_A_|_P_,        "at",               /* 0x80 */
_A_|_U_|_X_,    "A",                /* 0x80 */
_A_|_U_|_X_,    "B",                /* 0x80 */
_A_|_U_|_X_,    "C",                /* 0x80 */
_A_|_U_|_X_,    "D",                /* 0x80 */
_A_|_U_|_X_,    "E",                /* 0x80 */
_A_|_U_|_X_,    "F",                /* 0x80 */
_A_|_U_,        "G",                /* 0x80 */
_A_|_U_,        "H",                /* 0x80 */
_A_|_U_,        "I",                /* 0x80 */
_A_|_U_,        "J",                /* 0x80 */
_A_|_U_,        "K",                /* 0x80 */
_A_|_U_,        "L",                /* 0x80 */
_A_|_U_,        "M",                /* 0x80 */
_A_|_U_,        "N",                /* 0x80 */
_A_|_U_,        "O",                /* 0x80 */
_A_|_U_,        "P",                /* 0x80 */
_A_|_U_,        "Q",                /* 0x80 */
_A_|_U_,        "R",                /* 0x80 */
_A_|_U_,        "S",                /* 0x80 */
_A_|_U_,        "T",                /* 0x80 */
_A_|_U_,        "U",                /* 0x80 */
_A_|_U_,        "V",                /* 0x80 */
_A_|_U_,        "W",                /* 0x80 */
_A_|_U_,        "X",                /* 0x80 */
_A_|_U_,        "Y",                /* 0x80 */
_A_|_U_,        "Z",                /* 0x80 */
_A_|_P_,        "bracketleft",      /* 0x80 */
_A_|_P_,        "backslash",        /* 0x80 */
_A_|_P_,        "bracketright",     /* 0x80 */
_A_|_P_,        "asciicircum",      /* 0x80 */
_A_|_P_|_W_,    "underscore",       /* 0x80 */
_A_|_P_,        "quoteleft",        /* 0x80 */
_A_|_L_|_X_,    "a",                /* 0x80 */
_A_|_L_|_X_,    "b",                /* 0x80 */
_A_|_L_|_X_,    "c",                /* 0x80 */
_A_|_L_|_X_,    "d",                /* 0x80 */
_A_|_L_|_X_,    "e",                /* 0x80 */
_A_|_L_|_X_,    "f",                /* 0x80 */
_A_|_L_,        "g",                /* 0x80 */
_A_|_L_,        "h",                /* 0x80 */
_A_|_L_,        "i",                /* 0x80 */
_A_|_L_,        "j",                /* 0x80 */
_A_|_L_,        "k",                /* 0x80 */
_A_|_L_,        "l",                /* 0x80 */
_A_|_L_,        "m",                /* 0x80 */
_A_|_L_,        "n",                /* 0x80 */
_A_|_L_,        "o",                /* 0x80 */
_A_|_L_,        "p",                /* 0x80 */
_A_|_L_,        "q",                /* 0x80 */
_A_|_L_,        "r",                /* 0x80 */
_A_|_L_,        "s",                /* 0x80 */
_A_|_L_,        "t",                /* 0x80 */
_A_|_L_,        "u",                /* 0x80 */
_A_|_L_,        "v",                /* 0x80 */
_A_|_L_,        "w",                /* 0x80 */
_A_|_L_,        "x",                /* 0x80 */
_A_|_L_,        "y",                /* 0x80 */
_A_|_L_,        "z",                /* 0x80 */
_A_|_P_,        "braceleft",        /* 0x80 */
_A_|_P_,        "bar",              /* 0x80 */
_A_|_P_,        "braceright",       /* 0x80 */
_A_|_P_,        "asciitilde",       /* 0x80 */
_A_|_C_,        0,                  /* 0x80 */
_U_,            "Adieresis",        /* 0x80 */
_U_,            "Aring",            /* 0x81 */
_U_,            "Ccedilla",         /* 0x82 */
_U_,            "Eacute",           /* 0x83 */
_U_,            "Ntilde",           /* 0x84 */
_U_,            "Odieresis",        /* 0x85 */
_U_,            "Udieresis",        /* 0x86 */
_L_,            "aacute",           /* 0x87 */
_L_,            "agrave",           /* 0x88 */
_L_,            "acircumflex",      /* 0x89 */  
_L_,            "adieresis",        /* 0x8a */
_L_,            "atilde",           /* 0x8b */
_L_,            "aring",            /* 0x8c */
_L_,            "ccedilla",         /* 0x8d */
_L_,            "eacute",           /* 0x8e */
_L_,            "egrave",           /* 0x8f */
_L_,            "ecircumflex",      /* 0x90 */
_L_,            "edieresis",        /* 0x91 */
_L_,            "iacute",           /* 0x92 */
_L_,            "igrave",           /* 0x93 */
_L_,            "icircumflex",      /* 0x94 */
_L_,            "idieresis",        /* 0x95 */
_L_,            "ntilde",           /* 0x96 */
_L_,            "oacute",           /* 0x97 */
_L_,            "ograve",           /* 0x98 */
_L_,            "ocircumflex",      /* 0x99 */
_L_,            "odieresis",        /* 0x9a */
_L_,            "otilde",           /* 0x9b */
_L_,            "uacute",           /* 0x9c */
_L_,            "ugrave",           /* 0x9d */
_L_,            "ucircumflex",      /* 0x9e */
_L_,            "udieresis",        /* 0x9f */
_P_,            "dagger",           /* 0xa0 */
0,              0,                  /* 0xa1 */
_P_,            "cent",             /* 0xa2 */
_P_,            "sterling",         /* 0xa3 */
_P_,            "section",          /* 0xa4 */
_P_,            "bullet",           /* 0xa5 */
_P_,            "paragraph",        /* 0xa6 */
_L_,            "germandbls",       /* 0xa7 */
_P_,            "register",         /* 0xa8 */
_P_,            "copyright",        /* 0xa9 */
_P_,            "trademark",        /* 0xaa */
_P_,            "acute",            /* 0xab */
_P_,            "dieresis",         /* 0xac */
0,              0,                  /* 0xad */
_U_,            "AE",               /* 0xae */
_U_,            "Oslash",           /* 0xaf */
0,              0,                  /* 0xb0 */
0,              0,                  /* 0xb1 */
0,              0,                  /* 0xb2 */
0,              0,                  /* 0xb3 */
_P_,            "yen",              /* 0xb4 */
0,              0,                  /* 0xb5 */
0,              0,                  /* 0xb6 */
0,              0,                  /* 0xb7 */
0,              0,                  /* 0xb8 */
0,              0,                  /* 0xb9 */
0,              0,                  /* 0xba */
_P_,            "ordfeminine",      /* 0xbb */
_P_,            "ordmasculine",     /* 0xbc */
0,              0,                  /* 0xbd */
_L_,            "ae",               /* 0xbe */
0,              0,                  /* 0xbf */
_P_,            "questiondown",     /* 0xc0 */
_P_,            "exclamdown",       /* 0xc1 */
_P_,            "logicalnot",       /* 0xc2 */
0,              0,                  /* 0xc3 */
_P_,            "florin",           /* 0xc4 */
0,              0,                  /* 0xc5 */
0,              0,                  /* 0xc6 */
_P_,            "guillemotleft",    /* 0xc7 */
_P_,            "guillemotright",   /* 0xc8 */
_P_,            "ellipsis",         /* 0xc9 */
_L_,            "space",            /* 0xca */
_U_,            "Aacute",           /* 0xcb */
_U_,            "Atilde",           /* 0xcc */
_U_,            "Otilde",           /* 0xcd */
_U_,            "OE",               /* 0xce */
_L_,            "oe",               /* 0xcf */
_P_,            "endash",           /* 0xd0 */
_P_,            "emdash",           /* 0xd1 */
_P_,            "quotedblleft",     /* 0xd2 */
_P_,            "quotedblright",    /* 0xd3 */
_P_,            "quoteleft",        /* 0xd4 */
_P_,            "quoteright",       /* 0xd5 */
0,              0,                  /* 0xd6 */
0,              0,                  /* 0xd7 */
_L_,            "ydieresis",        /* 0xd8 */
_U_,            "Ydieresis",        /* 0xd9 */
_P_,            "fraction",         /* 0xda */
_P_,            "currency",         /* 0xdb */
_P_,            "guilsinglleft",    /* 0xdc */
_P_,            "guilsinglright",   /* 0xdd */
_L_,            "fi",               /* 0xde */
_L_,            "fl",               /* 0xdf */
_P_,            "daggerdbl",        /* 0xe0 */
_P_,            "periodcentered",   /* 0xe1 */
_P_,            "quotesinglbase",   /* 0xe2 */
_P_,            "quotedblbase",     /* 0xe3 */
_P_,            "perthousand",      /* 0xe4 */
_U_,            "Acircumflex",      /* 0xe5 */
_U_,            "Ecircumflex",      /* 0xe6 */
_U_,            "Agrave",           /* 0xe7 */
_U_,            "Edieresis",        /* 0xe8 */
_U_,            "Egrave",           /* 0xe9 */
_U_,            "Iacute",           /* 0xea */
_U_,            "Icircumflex",      /* 0xeb */
_U_,            "Idieresis",        /* 0xec */
_U_,            "Igrave",           /* 0xed */
_U_,            "Oacute",           /* 0xee */
_U_,            "Ocircumflex",      /* 0xef */
0,              0,                  /* 0xf0 */
_U_,            "Ograve",           /* 0xf1 */
_U_,            "Uacute",           /* 0xf2 */
_U_,            "Ucircumflex",      /* 0xf3 */
_U_,            "Ugrave",           /* 0xf4 */
_L_,            "dotlessi",         /* 0xf5 */
_P_,            "circumflex",       /* 0xf6 */
_P_,            "tilde",            /* 0xf7 */
_P_,            "macron",           /* 0xf8 */
_P_,            "breve",            /* 0xf9 */
_P_,            "dotaccent",        /* 0xfa */
_P_,            "ring",             /* 0xfb */
_P_,            "cedilla",          /* 0xfc */
_P_,            "hungarumlaut",     /* 0xfd */
_P_,            "ogonek",           /* 0xfe */
_P_,            "caron",            /* 0xff */
0,              0
};

unsigned char upcase[] = { 
 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xcb,
 0xe7, 0xe5, 0x80, 0xcc, 0x81, 0x82, 0x83, 0xe9,
 0xe6, 0xe8, 0xea, 0xed, 0xeb, 0xec, 0x84, 0xee,
 0xf1, 0xf3, 0x85, 0xcd, 0xf2, 0xf4, 0xf3, 0x86,
 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xae, 0xbf,
 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xce,
 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
 0xd9, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};

/*
unsigned char lowercasemap[] = { 
};
*/

unsigned char identitymap[] = { 
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};

unsigned char sortmap[] = {
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
    0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
    0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
    0x41, 0x41, 0x43, 0x45, 0x84, 0x85, 0x86, 0x41,
    0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x45, 0x45,
    0x45, 0x45, 0x49, 0x49, 0x49, 0x49, 0x4e, 0x4f,
    0x4f, 0x4f, 0x4f, 0x4f, 0x55, 0x55, 0x55, 0x55,
    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x53,
    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xae, 0xbf,
    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
    0xc8, 0xc9, 0x20, 0x41, 0x41, 0x4f, 0xae, 0xae,
    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
    0x59, 0x59, 0xda, 0xdb, 0xdc, 0xdd, 0x46, 0x46,
    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x41, 0x45, 0x41,
    0x45, 0x45, 0x49, 0x49, 0x49, 0x49, 0x4f, 0x4f,
    0xf0, 0x4f, 0x55, 0x55, 0x55, 0x49, 0xf6, 0xf7,
    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
